using System;
using System.Collections.Generic;
using System.Text;

namespace Kevin.Framework.Data.Provider
{
    public enum DatePartType
    {
        Year,
        Month,
        Day
    }
    public interface IColumnsFormatter
    {
        #region Aggregate

         string CountBig(string columnName);
        

         string CountBig(string columnName, bool isDistinct);
        

         string Count(string columnName);


         string Count(string columnName, bool isDistinct);


         string Sum(string columnName);


         string Min(string columnName);
        

         string Max(string columnName);
        

         string Avg(string columnName);
        

        #endregion

        #region String & Date Functions

         string ValidColumnName(string columnName);
        

         string Length(string columnName);
        

         string ToUpper(string columnName);
        

         string ToLower(string columnName);
       

         string Trim(string columnName);
        


         string SubString(string columnName, int start, int length);
                
        //public string DatePart(string columnName, DatePartType partType)


         string DateAdd(string columnName, DatePartType partType, int offset);
        

         string GetCurrentDate();
        

         string GetCurrentUtcDate();
        

        #endregion

         string ToNumber(string columnName);
        
    }
}
